package com.sky.financelake.retrofit;

import com.sky.financelake.bean.dto.CommunityDto;
import com.sky.financelake.bean.dto.CommunityDto1;
import com.sky.financelake.bean.dto.QuotationDto;
import com.sky.financelake.bean.dto.RPlateZjlxDto;
import com.sky.financelake.bean.dto.SimpleDayKDto;
import com.sky.financelake.bean.dto.SimplePlateZjlxDto;
import com.sky.financelake.bean.dto.SimpleStockDto;
import com.sky.financelake.bean.dto.SimpleStockZjlxDto;
import com.sky.financelake.bean.dto.StockDto;
import com.sky.financelake.bean.entity.CommunityEntity;
import com.sky.financelake.bean.entity.Fundamental;
import com.sky.financelake.bean.param.CommunityParam;
import com.sky.financelake.bean.param.StockParam;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

public interface Api {

    /**
     * 根据代码获取获取股票信息
     *
     * @param code
     * @return
     */
    @GET("stock/getStockByCode")
    Call<ApiResponse<StockDto>> getStockByCode(@Query("code") String code);

    /**
     * 根据代码获取行情数据
     *
     * @param tsCode
     * @return
     */
    @GET("quotation/getAllQuotationByCode")
    Call<ApiResponse<List<QuotationDto>>> getAllQuotationByCode(@Query("tsCode") String tsCode);

    /**
     * 分页获取股票
     *
     * @param param
     * @return
     */
    @POST("stock/getPagingList")
    Call<ApiResponse<List<StockDto>>> getStockPagingList(@Body StockParam param);

    /**
     * 分页获取文章
     *
     * @param param
     * @return
     */
    @POST("article/getPagingList")
    Call<ApiResponse<List<CommunityDto>>> getCommunityPagingList(@Body CommunityParam param);

    /**
     * 分页获取文章1
     *
     * @param param
     * @return
     */
    @POST("article/getPagingList")
    Call<ApiResponse<List<CommunityDto1>>> getCommunityPagingList1(@Body CommunityParam param);

    /**
     * 根据id获取文章
     *
     * @param id
     * @return
     */
    @GET("article/getArticleById")
    Call<ApiResponse<CommunityEntity>> getArticleById(@Query("id") Integer id);

    /**
     * 根据板块获取相关股票
     *
     * @param plates
     * @return
     */
    @GET("stock/getRelativeByPlates")
    Call<ApiResponse<List<SimpleStockDto>>> getRelativeByPlates(@Query("plates") String plates);

    /**
     * 获取板块资金流向排名
     *
     * @param days
     * @return
     */
    @GET("zjlx/plate/getPlateZjlxRank")
    Call<ApiResponse<List<RPlateZjlxDto>>> getPlateZjlxRank(@Query("days") Integer days);

    /**
     * 获取股票资金流向
     *
     * @param days
     * @return
     */
    @GET("zjlx/stock/getZjlx")
    Call<ApiResponse<List<SimpleStockZjlxDto>>> getStockZjlx(@Query("key") String key);


    /**
     * 获取股票资金流向
     *
     * @param days
     * @return
     */
    @GET("zjlx/plate/getZjlx")
    Call<ApiResponse<List<SimplePlateZjlxDto>>> getPlateZjlx(@Query("key") String key);

    /**
     * 获取三红驻底下
     *
     * @param days
     * @return
     */
    @GET("quotation/getThreeRed")
    Call<ApiResponse<List<SimpleDayKDto>>> getThreeRed();

    /**
     * 获取组合结果
     *
     * @param days
     * @return
     */
    @GET("quotation/getCombinationResult")
    Call<ApiResponse<List<SimpleDayKDto>>> getCombinationResult(@Query("combination") String combination);

    /**
     * 根据code获取基本面信息
     *
     * @param days
     * @return
     */
    @GET("fundamental/getFundamentalByCode")
    Call<ApiResponse<Fundamental>> getFundamentalByCode(@Query("code") String code);
}
